package org.jeecg.modules.xxgx.fpgl.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.innerApi.common.requestDto.InvoiceParam;
import org.jeecg.modules.innerApi.common.responseDto.FileStreamRtn;
import org.jeecg.modules.innerApi.common.responseDto.InvoiceRtn;
import org.jeecg.modules.xxgx.fpgl.entity.CsXxFpxx;
import org.jeecg.modules.xxgx.fpgl.entity.CsXxFpxxmx;
import org.jeecg.modules.xxgx.fpgl.vo.CsXxFpjfVO;
import org.jeecg.modules.xxgx.fpgl.vo.EditDybzParam;

import java.io.IOException;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * @Description: 销项发票
 * @Author: jeecg-boot
 * @Date:   2023-09-21
 * @Version: V1.0
 */
public interface ICsXxFpxxService extends IService<CsXxFpxx> {

	/**
	 * 添加一对多
	 *
	 * @param csXxFpxx
	 * @param csXxFpxxmxList
	 */
	public void saveMain(CsXxFpxx csXxFpxx,List<CsXxFpxxmx> csXxFpxxmxList) ;
	
	/**
	 * 修改一对多
	 *
   * @param csXxFpxx
   * @param csXxFpxxmxList
	 */
	public void updateMain(CsXxFpxx csXxFpxx,List<CsXxFpxxmx> csXxFpxxmxList);
	
	/**
	 * 删除一对多
	 *
	 * @param id
	 */
	public void delMain (String id);
	
	/**
	 * 批量删除一对多
	 *
	 * @param idList
	 */
	public void delBatchMain(Collection<? extends Serializable> idList);
	/**
	 * 根据待开单据开具结果，将发票存储到发票信息表中
	 * @param dkfpParam 开票信息
	 * @param dkfpParam 待开发票信息
	 * @param fpxxRtn   开票返回信息
	 */
	 String saveFpxxByDkdj(InvoiceParam dkfpParam, InvoiceRtn fpxxRtn);

	/**
	 * 修改打印标志
	 * @param editDybzParam
	 */
	public Result updateDybz(EditDybzParam editDybzParam);

	/**
	 * 发票下载
	 * @param fpid
	 * @param downflag 1:ofd  2:pdf 3:xml
	 * @return
	 */
	public FileStreamRtn download(String fpid, String downflag) throws IOException;

	/**
	 * 查询版式文件url（无版式文件时自动下载）
	 * @param fpxxId
	 * @return
	 */
	public Result<CsXxFpjfVO> getBswj(String fpxxId);
}
